﻿Namespace moteurTauxGaranti1

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <remarks></remarks>
    Public Class simulationSensibiliteParametre
        Inherits simulationIndividuelle
        ''' <summary>
        ''' 
        ''' </summary>
        ''' <remarks></remarks>
        Public Sub New(ByVal moteur As IIntegMoteur_MethodeEqTarif, _
                       ByVal nomParametre As String, _
                       ByVal chocMin As Double, _
                       ByVal chocMax As Double, _
                       ByVal pas As Double, _
                       ByVal chocRadar As Double)
            MyBase.New(moteur, nomParametre, chocMin, chocMax, pas, chocRadar)
        End Sub
        ''' <summary>
        ''' 
        ''' </summary>
        ''' <remarks></remarks>
        Protected Overrides Sub procedureCalcul()
            Dim val As Double = _chocMin
            Dim rowEnCours As DataRow
            CType(_resultats, DataTable).Clear()

            'La sensibilité
            While val <= _chocMax

                If ModuleTauxGaranti.currentasyncinfo IsNot Nothing Then
                    Using ModuleTauxGaranti.currentasyncinfo
                        ModuleTauxGaranti.currentasyncinfo.Progress = (val - _chocMin) / (_chocMax - _chocMin)
                        ModuleTauxGaranti.currentasyncinfo.Message = "Simulation des variations de " & Me.Description & " ..."
                    End Using
                End If
                rowEnCours = _resultats.NewRow

                'Regarder pourquoi cela fonctionne pour le taux nominal actuariel
                _moteur.listeParametres(_nom).SimulDouble = val
                ''Dim SimulationChoc As New SimulationChoc(_nom, val)
                _moteur.calcule(False)
                rowEnCours(_nom) = val
                rowEnCours("S/P") = _moteur.PPurePf / _moteur.PTechPf
                _resultats.Rows.Add(rowEnCours)
                val = val + _pas
            End While

            'Le choc pour le radar
            _moteur.listeParametres(_nom).SimulDouble = _chocRadar
            _moteur.calcule(False)
            _valeurRadar = _moteur.PPurePf / _moteur.PTechPf
            _moteur.listeParametres(_nom).SimulDouble = 0
        End Sub
    End Class

End Namespace